/**
 * 插件扩展
 */
layui.config({
	base : basePath + 'etSales/common/js/' // 模块目录
}).extend({ // 模块别名
	et_commutil : 'et_commutil'
});

/**
 * 公用方法调用
 */
var assemblys = {
	// 系统方法
	alert : null,
	msg : null,
	confirm : null,
	loadingMsg : null,
	showWindow : null,
	closeMsg : null,
	closeWindow : null,
	addTab : null,
	// JS工具
	getDateTime : null,
	getDateForStr : null,
	formatDateTime : null,
	chkAllNum : null,
	checkSpecialCharacter : null,
	checkPhone : null,
	chkAllChar : null,
	chkChinese : null

}

/**
 * 调用公共JS，创建全局方法
 */
layui.use([ 'layer', 'et_commutil' ], function() {
	
	// 系统方法
	assemblys.msg = function(title, callback1) {
		layer.msg(title, callback1);
	}

	// 处理中
	assemblys.loadingMsg = function() {
		layer.msg('处理中...', {
			shade : [ 0.8, '#393D49' ],
			time : 60 * 60 * 1000
		});
	}

	assemblys.alert = function(title, callback1) {
		layer.alert(title, {
			title : '提示'
		}, callback1);
	}
	assemblys.closeMsg = function() {
		layer.closeAll("dialog");
	}

	assemblys.closeWindow = function() {
		$("a.layui-layer-close").click();
	}

	assemblys.confirm = function(title, callback1, callback2) {
		layer.confirm(title, {
			btn : [ '确定', '取消' ],
			title : '提示'
		}, callback1, callback2);
		
	}
	assemblys.showWindow = function(width, height, url, title) {
		
		// 不存在时
		if (!url || url == "") {
			layer.msg("url不能为空");
			return;
		}
		
		if (!title) {
			title = '信息';
		}
		
		width = width.indexOf("%") != -1 ? width : width.indexOf("px") != -1 ? width : (width + "px");
		height = height.indexOf("%") != -1 ? height : height.indexOf("px") != -1 ? height : (height + "px");
		
		// 获取皮肤
		var skin = localStorage.skin ? localStorage.skin : 0;
		layer.open({
			title : title,
			type : 2,
			content : url,
			area : [ width, height ], // 宽高
			skin : 'layui-chilWin-class-skin-' + skin
		});
	}

	// 新增选项卡
	assemblys.addTab = function(title, src) {
		var card = 'card'; // 选项卡对象
		var id = new Date().getTime(); // ID
		var flag = getTitleId(card, title); // 是否有该选项卡存在
		if (flag > 0) {
			id = flag;
		} else {
			if (src) {
				layui.element.tabAdd(card, {
					title : '<span><i class="layui-icon">&#xe621;</i>' + title + '</span>',
					content : "<iframe  id='iframeChildren_" + id + "' src='" + src + "' frameborder=\"0\"></iframe>",
					id : id
				});
				// 关闭弹窗
				layer.closeAll();
			}
		}
		layui.element.tabChange(card, id);
		tabLength();
	}

	// js 方法
	var et_commutil = layui.et_commutil;
	assemblys.getDateTime = et_commutil.getDateTime;
	assemblys.getDateForStr = et_commutil.getDateForStr;
	assemblys.formatDateTime = et_commutil.formatDateTime;
	assemblys.chkAllNum = et_commutil.chkAllNum;
	assemblys.checkSpecialCharacter = et_commutil.checkSpecialCharacter;
	assemblys.checkPhone = et_commutil.checkPhone;
	assemblys.chkAllChar = et_commutil.chkAllChar;
	assemblys.chkChinese = et_commutil.chkChinese;
	
	// 根据导航栏text获取lay-id
	function getTitleId(card, title) {
		var id = -1;
		$(document).find(".layui-tab[lay-filter=" + card + "] ul li").each(function() {
			if ($(this).find('span').text().indexOf(title) != -1) {
				id = $(this).attr('lay-id');
			}
		});
		return id;
	}
	
});

// 计算选项卡长度
function tabLength() {
	var ulWidth = $(".layui-tab-title").width();
	var liWidth = 0;
	
	$(".layui-tab-title li").each(function() {
		liWidth += $(this).width() ? parseInt($(this).width()) : 0;
	});
	
	if (liWidth > (ulWidth * 0.85)) {
		$(".layui-tab-title .layui-tab-bar").css("display", "");
		
	} else {
		$(".layui-tab-title .layui-tab-bar").css("display", "none");
	}
	
}

// 加载框架监听
function initLayUICommonMethod() {
	// 主入口方法
	layui.use([ 'layer', 'element', 'util' ], function() {
		
		// 操作对象
		var device = layui.device(), element = layui.element, layer = layui.layer, util = layui.util, $ = layui.jquery, cardIdx = 0, cardLayId = 0, side = $('.my-side'), body = $('.my-body'), footer = $('.my-footer');
		
		// 阻止IE7以下访问
		if (device.ie && device.ie < 8) {
			layer.alert('当前UI框架最低支持IE8');
		}
		
		// 导航栏收缩
		function navHide(t, st) {
			var time = t ? t : 50;
			st ? localStorage.log = 1 : localStorage.log = 0;
			side.animate({
				'left' : -160
			}, time);
			body.animate({
				'left' : 0
			}, time);
			footer.animate({
				'left' : 0
			}, time);
		}
		
		// 导航栏展开
		function navShow(t, st) {
			var time = t ? t : 50;
			st ? localStorage.log = 0 : localStorage.log = 1;
			side.animate({
				'left' : 0
			}, time);
			body.animate({
				'left' : 160
			}, time);
			footer.animate({
				'left' : 160
			}, time);
		}
		
		// 监听 收起-展开 按钮
		function initSwitch() {
			var skin = localStorage.skin || 0;
			$(".btn-switch-nav").children(":eq(0)").removeClass();
			$(".btn-switch-nav").children(":eq(0)").addClass("btn-switch-nav-img");
			// 初始化
			if (localStorage.log == 0) {
				$(".btn-switch-nav-img").addClass("btn-switch-nav-img-skin-" + skin).html("<i class=\"layui-icon2\">&#xeba8;</i>");
			} else {
				$(".btn-switch-nav-img").addClass("btn-switch-nav-img-skin-" + skin).html("<i class=\"layui-icon2\">&#xeb92;</i>");
			}
		}
		
		// 监听导航栏收缩
		$('.btn-switch-nav').on('click', function() {
			var log = localStorage.log;
			var skin = localStorage.skin || 0;
			if (log == 0) {
				$(".btn-switch-nav-img").addClass("btn-switch-nav-img-skin-" + skin).html("<i class=\"layui-icon2\">&#xeb92;</i>");
				navShow(50);
			} else {
				$(".btn-switch-nav-img").addClass("btn-switch-nav-img-skin-" + skin).html("<i class=\"layui-icon2\">&#xeba8;</i>");
				navHide(50);
			}
		});
		
		// 根据导航栏text获取lay-id
		function getTitleId(card, title) {
			var id = -1;
			$(document).find(".layui-tab[lay-filter=" + card + "] ul li").each(function() {
				if ($(this).find('span').text().indexOf(title) != -1) {
					id = $(this).attr('lay-id');
				}
			});
			return id;
		}
		
		// 添加TAB选项卡
		window.addTab = function(elem, tit, url) {
			
			var card = 'card'; // 选项卡对象
			var title = tit ? tit : elem.children("span").html(); // 导航栏text
			var src = url ? url : elem.attr('href-url'); // 导航栏跳转URL
			
			var id = new Date().getTime(); // ID
			var flag = getTitleId(card, title); // 是否有该选项卡存在
			// 大于0就是有该选项卡了
			if (flag > 0) {
				id = flag;
			} else {
				if (src) {
					// 新增
					element.tabAdd(card, {
						title : '<span>' + title + '</span>',
						content : "<iframe  id='iframeChildren_" + id + "' src='../" + src + "' frameborder=\"0\"></iframe>",
						id : id
					});
					// 关闭弹窗
					layer.closeAll();
					
					$(".my-body .layui-tab-card > .layui-tab-title li  i").unbind();
				}
			}
			// 切换相应的ID tab
			element.tabChange(card, id);
		};
		
		// 监听顶部右侧导航
		element.on('nav(side-top-right)', function(elem) {
			// 修改skin
			if ($(this).parent("dd").attr('data-skin')) {
				localStorage.skin = $(this).parent("dd").attr('data-skin');
				skin();
			} else {
				// 添加tab方法
				window.addTab(elem);
			}
		});
		
		// 监听导航(side-main)点击切换页面
		element.on('nav(side-main)', function(elem) {
			// 添加tab方法
			window.addTab(elem);
			tabLength();
		});
		
		// 删除选项卡
		window.delTab = function(layId) {
			
			// 删除
			element.tabDelete('card', layId);
			tabLength();
			
		};
		
		// 删除其他选项卡
		window.delOtherTab = function(layId2) {
			// 选项卡对象
			layui.each($('.my-body .layui-tab-title > li'), function(k, v) {
				var layId = $(this).attr('lay-id');
				if (layId != "1" && layId != layId2) {
					$(this).remove();
				}
				
			});
			// 页面对象
			layui.each($('.my-body .layui-tab-content > div').find("iframe"), function(k, v) {
				var id = $(this).attr('id');
				if (id != "iframeChildren_1" && id != ("iframeChildren_" + layId2)) {
					$(this).parent().remove();
				}
			});
			
			// 切换相应的ID tab
			element.tabChange("card", layId2);
		};
		
		// 删除所有选项卡
		window.delAllTab = function() {
			// 选项卡对象
			layui.each($('.my-body .layui-tab-title > li'), function(k, v) {
				var layId = $(this).attr('lay-id');
				if (layId != "1") {
					$(this).remove();
				}
			});
			// 页面对象
			layui.each($('.my-body .layui-tab-content > div').find("iframe"), function(k, v) {
				var id = $(this).attr('id');
				if (id != "iframeChildren_1") {
					$(this).parent().remove();
				}
			});
			
			// 切换相应的ID tab
			element.tabChange("card", "1");
			tabLength();
		};
		
		// 获取当前选中选项卡lay-id
		window.getThisTabID = function() {
			// 当前选中的选项卡id
			return $(document).find('body .my-body .layui-tab-card > .layui-tab-title .layui-this').attr('lay-id');
		};
		
		// 双击关闭相应选项卡
		$(document).on('dblclick', '.my-body .layui-tab-card > .layui-tab-title li', function() {
			// 工作台以外，删除选项卡
			if ($(this).index() > 0) {
				
				var layId = $(this).attr("lay-id");
				
				var liClass = $(this).attr("class");
				
				if (liClass != undefined && liClass.indexOf("layui-this") != -1) {
					$("#iframeChildren_" + layId).parent().remove();
					$(this).remove();
					layId = $(".layui-tab-title").find("li:last").attr("lay-id");
				} else {
					$("#iframeChildren_" + layId).parent().remove();
					$(this).remove();
				}
				
				// 切换相应的ID tab
				element.tabChange("card", layId);
				
			} else {
				$("#iframeChildren_1").attr("src", $("#iframeChildren_1").attr("src"));
				layer.msg('工作台已刷新')
			}
			
			tabLength();
		});
		
		// 单击该关闭相应选项卡
		$(document).on('click', '.my-body .layui-tab-card > .layui-tab-title li  i', function() {
			
			var layId = $(this).parent("li").attr("lay-id");
			
			var liClass = $(this).parent("li").attr("class");
			
			if (liClass != undefined && liClass.indexOf("layui-this") != -1) {
				$("#iframeChildren_" + layId).parent().remove();
				$(this).parent("li").remove();
				layId = $(".layui-tab-title").find("li:last").attr("lay-id");
				
			} else {
				$("#iframeChildren_" + layId).parent().remove();
				$(this).parent("li").remove();
			}
			
			// 切换相应的ID tab
			element.tabChange("card", layId);
			
			tabLength();
			
		});
		
		// 选项卡右键事件阻止
		$(document).on("contextmenu", '.my-body .layui-tab-card > .layui-tab-title li', function() {
			return false;
		});
		
		// 选项卡右键事件
		$(document).on("mousedown", '.my-body .layui-tab-card > .layui-tab-title li', function(e) {
			// 判断是右键点击事件并且不是工作台选项卡
			if (3 == e.which && $(this).index() > 0) {
				// 赋值
				cardIdx = $(this).index();
				cardLayId = $(this).attr('lay-id');
				// 选择框
				layer.tips($('.my-dblclick-box').html(), $(this), {
					skin : 'dblclick-tips-box',
					tips : 3,
					time : false
				});
			}
		});
		
		// 点击body关闭tips
		$(document).on('click', 'html', function() {
			layer.closeAll('tips');
		});
		
		// 右键提示框菜单操作-刷新页面
		$(document).on('click', '.card-refresh', function() {
			// 窗体对象
			var ifr = $(document).find('.my-body .layui-tab-content .layui-tab-item iframe').eq(cardIdx);
			// 刷新当前页
			ifr.attr('src', ifr.attr('src'));
			// 切换到当前选项卡
			element.tabChange('card', cardLayId);
			
			tabLength();
		});
		
		// 右键提示框菜单操作-关闭页面
		$(document).on('click', '.card-other-close', function() {
			// 删除
			window.delOtherTab(cardLayId);
			
			tabLength();
		});
		
		// 关闭当前页面
		$(document).on('click', '.card-close', function() {
			// 删除
			window.delTab(cardLayId);
			
		});
		
		// 右键提示框菜单操作-关闭所有页面
		$(document).on('click', '.card-close-all', function() {
			// 删除
			window.delAllTab();
		});
		
		// 皮肤
		function skin() {
			var skin = localStorage.skin ? localStorage.skin : 0;
			var body = $('body');
			for (var i = 0; i < 15; i++) {
				body.removeClass("skin-" + i);
			}
			
			body.addClass('skin-' + skin);
			
			// 加载收起栏样式
			initSwitch();
		}
		
		// 工具
		function _util() {
			var bar = $('.layui-fixbar');
			// 分辨率小于1023 使用内部工具组件
			if ($(window).width() < 1023) {
				util.fixbar({
					bar1 : '&#xe602;',
					css : {
						left : 10,
						bottom : 54
					},
					click : function(type) {
						if (type === 'bar1') {
							// iframe层
							layer.open({
								type : 1, // 类型
								title : false, // 标题
								offset : 'l', // 定位 左边
								closeBtn : 0, // 关闭按钮
								anim : 0, // 动画
								shadeClose : true, // 点击遮罩关闭
								shade : 0.8, // 半透明
								area : [ '150px', '100%' ], // 区域
								skin : 'my-mobile', // 样式
								content : $('body .my-side').html()
							// 内容
							});
						}
						element.init();
					}
				});
				bar.removeClass('layui-hide');
				bar.addClass('layui-show');
			} else {
				bar.removeClass('layui-show');
				bar.addClass('layui-hide');
			}
		}
		
		// 窗口改变，自定义
		function resizeChange(result) {
			if (result) {
				$("#logo-Head").css("display", "");
				$(".layui-right-item").css("display", "");
			} else {
				$("#logo-Head").css("display", "none");
				$(".layui-right-item").css("display", "none");
			}
		}
		
		// 自适应
		$(window).on('resize', function() {
			if ($(window).width() > 1023) {
				navShow(10);
				resizeChange(true);
			} else {
				navHide(10);
				resizeChange(false);
			}
			_util();
		});
		
		// 监听控制content高度
		function init() {
			
			// 起始判断-收缩/展开
			if (!localStorage.log) {
				if ($(window).width() > 1023) {
					if (localStorage.log == 0) {
						navHide(10);
						resizeChange(false);
					} else {
						navShow(10);
						resizeChange(true);
					}
				} else {
					navHide(10);
					resizeChange(false);
				}
			} else {
				if (localStorage.log == 0) {
					navHide(10);
				} else {
					navShow(10);
				}
			}
			// 工具
			_util();
			// skin
			skin();
			
			// 计算窗口
			function windowSize() {
				
				// 选项卡高度
				var cardTitleHeight = $(document).find(".layui-tab[lay-filter='card'] ul.layui-tab-title").height();
				// 需要减去的高度
				var height = $(window).height() - $('.layui-header').height() - cardTitleHeight - $('.layui-footer').height();
				// 设置高度
				$(document).find(".layui-tab[lay-filter='card'] div.layui-tab-content").height(height - 10);
			}
			
			windowSize();
			
			$(window).resize(function() {
				windowSize();
				tabLength();
			});
			
		}
		
		// 初始化
		init();
	});
}